//============================================================================
// Name        : surtidorEntrenamiento.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "managers/LectorArchivos.h"
#include "estructuras/lista/Lista.h"
#include "estructuras/lista/IteradorLista.h"
#include <stdexcept>
#include <sstream>
using namespace std;

int main() {
	srand(time(NULL));

	string nombre;
	nombre = "20";
	static string ARCHIVO_ORIGEN =
			"C:/Users/Jonathan/Desktop/Algoritmos 2/archivos/generados/train.txt";
	static string ARCHIVO_ENTRENA =
			"C:/Users/Jonathan/Desktop/Algoritmos 2/archivos/generados/entrenamientoGen"
					+ nombre + ".txt";
	static string ARCHIVO_RTAS =
			"C:/Users/Jonathan/Desktop/Algoritmos 2/archivos/generados/rtas"
					+ nombre + ".txt";
	static string ARCHIVO_ADIVINAR =
			"C:/Users/Jonathan/Desktop/Algoritmos 2/archivos/generados/adivinar"
					+ nombre + ".txt";
	LectorArchivos train, adivinar, rtas, entrena;
	Lista<string> original;
	Lista<int> lineasUsadas;
	Lista<string> adivinarL;
	Lista<string> rtasL;
	Lista<string> entrenaL;
	string linea;
	int numero;

	train.abrir(ARCHIVO_ORIGEN);
	entrena.abrir(ARCHIVO_ENTRENA);
	rtas.abrir(ARCHIVO_RTAS);
	adivinar.abrir(ARCHIVO_ADIVINAR);

	while (train.getLinea(linea)) {
		original.add(linea);
	}
	while (entrenaL.size() * 100 / original.size() < 70) {
		numero = rand() % (original.size() + 1);
		if (!lineasUsadas.exist(numero)) {
			entrenaL.add(original.getAt(numero));
			lineasUsadas.add(numero);
		}
	}

	// filtro las que van respuestas
	IteradorLista<string> iteradorUsados = original.iterador();
	int cont = 0;
	while (iteradorUsados.tieneSiguiente()) {
		if (!lineasUsadas.exist(cont)) {
			rtasL.add(iteradorUsados.siguiente());
		} else {
			iteradorUsados.siguiente();
		}
		cont++;
	}
	// armo las que van a ser adivinanzas
	IteradorLista<string> iteradorAdivina = rtasL.iterador();
	while (iteradorAdivina.tieneSiguiente()) {
		linea = iteradorAdivina.siguiente();
		adivinarL.add(linea.substr(2, linea.size() - 1));
	}
	/**
	 * Ahora guardo todo
	 */

	IteradorLista<string> iteradorRespuestas = rtasL.iterador();
	while (iteradorRespuestas.tieneSiguiente()) {
		rtas.escribir(iteradorRespuestas.siguiente());
		rtas.terminarLinea();
	}
	IteradorLista<string> iteradorAdivinanzas = adivinarL.iterador();
	while (iteradorAdivinanzas.tieneSiguiente()) {
		adivinar.escribir(iteradorAdivinanzas.siguiente());
		adivinar.terminarLinea();
	}
	IteradorLista<string> iteradorEntrenamiento = entrenaL.iterador();
	while (iteradorEntrenamiento.tieneSiguiente()) {
		entrena.escribir(iteradorEntrenamiento.siguiente());
		entrena.terminarLinea();
	}

	return 0;
}
